I/O OPERATIONS AND PARAMETERS:
copyright (C) 1983 by E. E. Bergmann
definitions in alphabetical (ASCII) order
:
::
*********************************************************
*							*
* PISTOL-Portably Implemented Stack Oriented Language   *
*			Version 2.0			*
* (C) 1983 by	Ernest E. Bergmann			*
*		Physics, Building #16			*
*		Lehigh Univerisity			*
*		Bethlehem, Pa. 18015			*
*							*
* Permission is hereby granted for all reproduction and *
* distribution of this material provided this notice is *
* included.						*
*							*
*********************************************************
:
::
#LINES		After PISTOL accepts input for compilation, the
		variable is reset to 0. As each line is output
		this variable is incremented and compared with
		the current value of TERMINAL-PAGE; if equal
		input from the user (typically a carriage
		return) is used to cause a pause in the output
		scrolling.  At this point, any input character
		will cause #LINES to be reset to 0.  If the
		input character is a 'Q', the current activity
		is ABORTed.

#TYPE	Prints a set of digit values from the top of stack
	until a negative (sentinel) is encountered.  (Used
	to define '= ).

<U#>	It is used to convert the value on the top of stack
	into separate digits with -1 as sentinel.  Its output
	on stack can be used by #TYPE (Used in the definition
	of '= ).

=	type the numerical value of the top of stack;
	no leading or trailing blanks are supplied.

=PACK	converts signed value on top of stack into a string.
	It leaves a pointer to this string on stack.


?	types the numerical value of the RAM location
	pointed to by the top of stack; equivalent to
	" W@ = ".

ASCII	converts a small number (a digit) into its ASCII
	representation.

BINARY	sets the base for numerical I/O to 2.

COLUMN		Variable that contains the column number that
		the console is at during output.  It is reset
		to 0 whenever a NEWLINE character is output.
		During output to the console if the value of
		COLUMN becomes equal to the value of
		TERMINAL-WIDTH then a new line is begun.

CONSOLE		Boolean variable that will prevent output
		to the user's terminal if it is set to FALSE.
		Probably would be used in connection with
		writing lengthy output to the listfile when
		there is no desire to have this information
		presented to the user's console as well.

CR	Outputs a carriage return, line-feed sequence.

DECIMAL	 sets the base for numerical I/O to 10.

ECHO		Boolean variable which, when set TRUE, causes
		whatever PISTOL code that is being LOADed to be
		listed as it is being compiled.

HEX	sets the base for numerical I/O to 16.

IFCR	does a CR if not in column 0.

INDENT	advances to the coulumn specified by the top of
	stack unless one is already there or beyond.
	Trying to indent beyond TERMINAL-WIDTH, causes
	a new line to be started instead.

INFILE		Does not contain 0 when LOADing from a file
		or from the edit buffer.  Contains pointer to
		original (temporary) filename string if
		inputing from a file.  If input is from the
		edit buffer, its contents is the current line
		number.  INFILE contains 0 [false] when
		interpreting from the console keyboard.

INPUT	takes the line number on the top of stack and allows
	the user to enter (insert above the old line specified)
	as many new lines as desired into the edit buffer.
	Completion of input is signified by supplying an
	empty line (an immediate carriage return).

INPUTFILE-STATUS
		Contains the status of the file being input by
		the editor (opened by OPENR).  If its value is
		0, the file has just been opened. If positive,
		it is a count of the number of lines read so
		far.  If -1, no file has been opened or: if
		negative, the number of lines read (magnitude)
		and the file is in an eof condition.

LIST		Boolean variable when true causes the system
		to output everything that would go to the
		user's console to the listfile as well.  (see
		LISTFILE in i/o).

MERR	Prints the error message string that is pointed to by
	the top of stack; it then ABORTs.

MSG	types a message pointed to by the top of stack;
	starts a new line if the string is too long to
	"fit" on current line(tabs not properly estimated).

MSGS	takes the number on top of stack as the number of
	that are next to the top of stack that are to be
	output, the BOTTOM-MOST one first.  For example:

	'ONE 'TWO 'THREE 3 MSGS

	produces:

	ONETWOTHREE

	If the combined length of all the strings will
	not fit on the current line, a new line is started.
	(tabs not properly estimated).

NEWLINE		Typically ord(<CR>) or ord(<LF>); implemented
		char value used to separate line of text from
		next in internal PISTOL representation.  I/O
		routines must convert external (system file
		and console i/o conventions) to NEWLINE in
		PISTOL.

OCTAL	sets the base for numerical I/O to 8.

OPENR	takes a string pointed to by the top of stack and
	opens that named file for reading.  It is the user's
	responsibility to make sure that the named file
	exists already.  If another file was opened for reading
	previously, it is closed by this new OPENR.

OPENW	takes a string pointed to by the top of stack and
	opens that named file for writing.
	(*** It will DESTROY any file that already exists
	with that name!!!****)

OUTPUT-STATUS	Indicates status of file for editor's output
		(file opened by OPENW).  If value is +1, no
		file has been opened yet, or it has been
		logically closed.  If the value is 0, the file
		has just been opened, but not yet used.  If
		negative, it's magnitude is the count of the
		number of lines written to the file so far.

RADIX		Contains current number base used for i/o
		number conversions.  For example, it is set to
		ten for DECIMAL mode.

RAISE		Boolean variable which causes system to convert
		all word tokens and single-quote strings to
		upper case.

READ	takes the number of lines specified by the top of
	stack from the file specified by the last OPENR and
	appends them to the end of text in the edit buffer.


READLINE reads a line of text from the file that has been
        opened for reading (from OPENR) and places it into
        the input line buffer, pointed to by LINEBUF. This
	text will be overwritten by the next input line so
	it should be used prior to the next input line.

SPACE	outputs a blank.

SPACES	outputs as many blanks as specified by top of stack.

TAB	simulates a tab; tab stops are separated by the
	size specified by the variable, TAB-SIZE.

TAB-SIZE	Normally set to 8. It determines the space
		between tab stops.

TABS	outputs as many simulated tabs as is specified
	by the top of stack.

TERMINAL-PAGE	Determines number of lines output between
		scrolling pauses.  See #LINES .

TERMINAL-WIDTH	Determines number of characters per line before
		automatic newlines.  See COLUMN .

TYI	inputs a character from the keyboard and places
	its ASCII value on the stack.  (Console input is
        buffered line-by-line). If the current line is empty or
	exhausted (except) for the end-of-line, the character
	returned on stack is the NEWLINE character.

TYIL	Inputs next character from console (all console input
	is buffered line-by-line), places it on stack; the rest
	of the console line is exhausted so that the next
	character read from the console will be from the start
	of the next line.  If the current line is empty or
	exhausted (except) for the end-of-line, the character
	returned on stack is the NEWLINE character.

TYO	outputs a character whose ASCII value is on the	stack.

TYPE	types the number of characters of text specified
	by the top of stack from the string area, starting at
	the location pointed to by the next to top of stack.

WRITE	takes the number of lines specified by the top of
	stack from the beginning of the text in the edit
	buffer and places them at the end of the file
	specified in the last OPENW.

WRITELINE writes that line that is in STRINGS (usually in
	the edit buffer) whose pointer is on the top of the
	stack.  The writing is into the file that was opened
	for writing by OPENW.

:
